#include <iostream>
using namespace std;


/*类
struct 结构体是类的一种特殊情况,对内是所有成员都是public
*/
class CPeople
{
public://访问修饰符：让下面的成员对外可见
    int a;

    /*构造函数，，可以多个*/
    CPeople(int& w) : a(w)//没有返回值，给类初始化用的，写在类里自动调用
    {
        w = 12;
    }

    void fun()
    {
        fun00();
    }
private://私有成员，对外不可见，对内可见，自己可以使用自己
    void fun00()
    {
        cout << "fun" << endl;
    }
protected://对外不可见，对子类可见
    void fun10()
    {
        cout << "fun" << endl;
    }
friend void fun_0(); //友元函数，使这里类里面的所有成员都对此函数可见
friend int main();//友元函数可以声明主函数
};


void fun_0()//已经在class中做了友元
{
    CPeople stu;
    stu.fun00();
}

int main()
{
    CPeople op;//栈区普通对象
    CPeople* op1 = new CPeople;//堆区指针对象

    op1->a = 13;

    op.a = 12;
    op.fun();

    system("pause");
    return 0;
}